package com.tyk.bookstore.back.product.util;

import com.tyk.bookstore.back.common.core.util.ComUtil;

import java.util.function.Function;

/**
 * @author tyk
 * @description 书籍工具类
 */
public class BookUtil {
    /**
     * 书籍编号位数
     */
    private static final int BOOK_NO_BIT = 16;
    /**
     * 尝试分配书籍编号的重试次数
     */
    private static final int RETRY_COUNT = 5;

    /**
     * 生成书籍编号
     *
     * @return 书籍编号
     */
    public static String bookNo(Function<String, Boolean> exist) {
        int cnt = RETRY_COUNT;
        while (cnt-- > 0) {
            String bno = ComUtil.randomIntSeqNotStartZero(BOOK_NO_BIT);
            if (!exist.apply(bno)) return bno;
        }
        return null;
    }
}
